import streamlit as st
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import numpy as np
from datetime import datetime, timedelta
import json
import hashlib

# 页面配置已在主应用中设置

# 页面标题
st.title("🔗 系统集成管理")
st.markdown("---")

# 侧边栏导航
st.sidebar.title("功能导航")
page_selection = st.sidebar.selectbox(
    "选择功能模块",
    ["集成概览", "API管理", "数据同步", "接口监控", "消息队列", "集成配置", "日志管理"]
)

# 集成概览页面
if page_selection == "集成概览":
    st.header("📊 系统集成概览")
    
    # 集成状态概览
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric(
            label="集成系统数",
            value="12个",
            delta="+2个"
        )
    
    with col2:
        st.metric(
            label="API接口数",
            value="45个",
            delta="+5个"
        )
    
    with col3:
        st.metric(
            label="今日调用量",
            value="15,678次",
            delta="+1,234次"
        )
    
    with col4:
        st.metric(
            label="系统可用率",
            value="99.8%",
            delta="+0.1%"
        )
    
    # 系统集成架构图
    st.subheader("系统集成架构")
    
    # 使用文本和图标展示系统架构
    st.markdown(
        """
        <div style="text-align: center; padding: 20px; border: 1px solid #ddd; border-radius: 10px; background-color: #f9f9f9;">
            <h4>供应链管理系统集成架构</h4>
            <div style="display: flex; justify-content: space-around; align-items: center; margin: 20px 0;">
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #007bff; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">🏢</span>
                    </div>
                    <p><strong>ERP系统</strong></p>
                </div>
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #28a745; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">📊</span>
                    </div>
                    <p><strong>BI系统</strong></p>
                </div>
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #ffc107; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">🏪</span>
                    </div>
                    <p><strong>WMS系统</strong></p>
                </div>
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #dc3545; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">🚛</span>
                    </div>
                    <p><strong>TMS系统</strong></p>
                </div>
            </div>
            <div style="text-align: center; margin: 20px 0;">
                <div style="width: 120px; height: 80px; background-color: #6f42c1; border-radius: 10px; display: flex; align-items: center; justify-content: center; margin: 0 auto;">
                    <span style="color: white; font-size: 18px;">🔗 API网关</span>
                </div>
            </div>
            <div style="display: flex; justify-content: space-around; align-items: center; margin: 20px 0;">
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #17a2b8; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">💳</span>
                    </div>
                    <p><strong>财务系统</strong></p>
                </div>
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #fd7e14; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">👥</span>
                    </div>
                    <p><strong>CRM系统</strong></p>
                </div>
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #6610f2; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">🏭</span>
                    </div>
                    <p><strong>MES系统</strong></p>
                </div>
                <div style="text-align: center;">
                    <div style="width: 80px; height: 80px; background-color: #e83e8c; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px;">
                        <span style="color: white; font-size: 24px;">📱</span>
                    </div>
                    <p><strong>移动端</strong></p>
                </div>
            </div>
        </div>
        """,
        unsafe_allow_html=True
    )
    
    # 集成系统状态
    st.subheader("集成系统状态")
    
    integration_status = pd.DataFrame({
        '系统名称': ['ERP系统', 'BI系统', 'WMS系统', 'TMS系统', '财务系统', 'CRM系统', 'MES系统', '移动端'],
        '系统类型': ['核心系统', '分析系统', '仓储系统', '运输系统', '财务系统', '客户系统', '生产系统', '移动应用'],
        '集成方式': ['REST API', 'ETL', 'REST API', 'REST API', 'SOAP', 'REST API', 'MQ', 'REST API'],
        '连接状态': ['正常', '正常', '正常', '异常', '正常', '正常', '正常', '正常'],
        '最后同步': ['2分钟前', '5分钟前', '1分钟前', '15分钟前', '3分钟前', '2分钟前', '1分钟前', '30秒前'],
        '数据量(今日)': ['15,678', '8,234', '12,456', '0', '5,678', '9,123', '6,789', '23,456'],
        '响应时间': ['120ms', '250ms', '95ms', 'N/A', '180ms', '110ms', '200ms', '85ms']
    })
    
    # 根据连接状态设置行颜色
    def highlight_integration_status(row):
        if row['连接状态'] == '异常':
            return ['background-color: #ffebee'] * len(row)
        else:
            return ['background-color: #e8f5e8'] * len(row)
    
    styled_integration_status = integration_status.style.apply(highlight_integration_status, axis=1)
    st.dataframe(styled_integration_status, use_container_width=True)
    
    # 集成性能分析
    col1, col2 = st.columns(2)
    
    with col1:
        # API调用量趋势
        dates = pd.date_range(start='2024-03-01', end='2024-03-15', freq='D')
        api_calls = pd.DataFrame({
            '日期': dates,
            'API调用量': [12000 + 3000*np.sin(i*2*np.pi/7) + np.random.normal(0, 500) 
                        for i in range(len(dates))]
        })
        
        fig_api_calls = px.line(api_calls, x='日期', y='API调用量',
                              title="API调用量趋势")
        st.plotly_chart(fig_api_calls, use_container_width=True)
    
    with col2:
        # 系统响应时间分布
        response_times = pd.DataFrame({
            '系统': ['ERP', 'BI', 'WMS', 'CRM', '财务', 'MES', '移动端'],
            '响应时间(ms)': [120, 250, 95, 110, 180, 200, 85]
        })
        
        fig_response = px.bar(response_times, x='系统', y='响应时间(ms)',
                            title="系统响应时间对比")
        fig_response.add_hline(y=200, line_dash="dash", line_color="red", 
                             annotation_text="目标响应时间")
        st.plotly_chart(fig_response, use_container_width=True)

# API管理页面
elif page_selection == "API管理":
    st.header("🔌 API管理")
    
    # API概览
    st.subheader("API概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("API总数", "45个", "+3个")
    
    with col2:
        st.metric("活跃API", "42个", "+2个")
    
    with col3:
        st.metric("今日调用", "15,678次", "+1,234次")
    
    with col4:
        st.metric("平均响应时间", "145ms", "-15ms")
    
    # API列表
    st.subheader("API接口列表")
    
    api_list = pd.DataFrame({
        'API名称': ['用户认证', '库存查询', '订单创建', '商品信息', '供应商管理', '财务数据', '运输跟踪', '报表生成'],
        'API路径': ['/api/v1/auth', '/api/v1/inventory', '/api/v1/orders', '/api/v1/products', 
                   '/api/v1/suppliers', '/api/v1/finance', '/api/v1/transport', '/api/v1/reports'],
        '请求方法': ['POST', 'GET', 'POST', 'GET', 'GET/POST', 'GET', 'GET', 'POST'],
        '版本': ['v1.2', 'v1.1', 'v1.3', 'v1.0', 'v1.2', 'v1.1', 'v1.0', 'v1.2'],
        '状态': ['正常', '正常', '正常', '正常', '正常', '维护中', '正常', '正常'],
        '今日调用': [2345, 3456, 1234, 4567, 1876, 0, 987, 567],
        '成功率': ['99.8%', '99.5%', '99.9%', '99.7%', '99.6%', 'N/A', '99.4%', '99.8%'],
        '平均响应时间': ['85ms', '120ms', '95ms', '110ms', '135ms', 'N/A', '200ms', '180ms']
    })
    
    # 根据状态设置行颜色
    def highlight_api_status(row):
        if row['状态'] == '维护中':
            return ['background-color: #fff3e0'] * len(row)
        elif row['状态'] == '异常':
            return ['background-color: #ffebee'] * len(row)
        else:
            return ['background-color: #e8f5e8'] * len(row)
    
    styled_api_list = api_list.style.apply(highlight_api_status, axis=1)
    st.dataframe(styled_api_list, use_container_width=True)
    
    # API详细信息
    st.subheader("API详细信息")
    
    selected_api = st.selectbox("选择API", api_list['API名称'].tolist())
    
    if selected_api:
        col1, col2 = st.columns(2)
        
        with col1:
            st.subheader("基本信息")
            api_info = api_list[api_list['API名称'] == selected_api].iloc[0]
            
            st.write(f"**API名称:** {api_info['API名称']}")
            st.write(f"**API路径:** {api_info['API路径']}")
            st.write(f"**请求方法:** {api_info['请求方法']}")
            st.write(f"**版本:** {api_info['版本']}")
            st.write(f"**状态:** {api_info['状态']}")
            
            st.subheader("请求示例")
            request_example = {
                "method": api_info['请求方法'],
                "url": f"https://api.scm.com{api_info['API路径']}",
                "headers": {
                    "Content-Type": "application/json",
                    "Authorization": "Bearer <token>"
                },
                "body": {
                    "param1": "value1",
                    "param2": "value2"
                }
            }
            st.json(request_example)
        
        with col2:
            st.subheader("性能指标")
            st.write(f"**今日调用量:** {api_info['今日调用']}次")
            st.write(f"**成功率:** {api_info['成功率']}")
            st.write(f"**平均响应时间:** {api_info['平均响应时间']}")
            
            st.subheader("响应示例")
            response_example = {
                "code": 200,
                "message": "success",
                "data": {
                    "id": "12345",
                    "name": "示例数据",
                    "status": "active"
                },
                "timestamp": "2024-03-15T14:30:00Z"
            }
            st.json(response_example)
    
    # API测试工具
    st.subheader("API测试工具")
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        test_api = st.selectbox("选择测试API", api_list['API名称'].tolist(), key="test_api")
        test_method = st.selectbox("请求方法", ['GET', 'POST', 'PUT', 'DELETE'])
    
    with col2:
        test_url = st.text_input("API地址", "https://api.scm.com/api/v1/test")
        test_headers = st.text_area("请求头", '{"Content-Type": "application/json"}')
    
    with col3:
        test_body = st.text_area("请求体", '{"param": "value"}')
        
        if st.button("发送测试请求", type="primary"):
            st.success("测试请求已发送")
            st.json({
                "status": 200,
                "response_time": "125ms",
                "response": {
                    "code": 200,
                    "message": "success",
                    "data": "test response"
                }
            })

# 数据同步页面
elif page_selection == "数据同步":
    st.header("🔄 数据同步")
    
    # 同步概览
    st.subheader("数据同步概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("同步任务数", "24个", "+2个")
    
    with col2:
        st.metric("今日同步量", "156,789条", "+12,345条")
    
    with col3:
        st.metric("同步成功率", "99.2%", "+0.3%")
    
    with col4:
        st.metric("平均同步时间", "3.5分钟", "-0.5分钟")
    
    # 同步任务列表
    st.subheader("数据同步任务")
    
    sync_tasks = pd.DataFrame({
        '任务名称': ['库存数据同步', '订单数据同步', '客户数据同步', '供应商数据同步', '财务数据同步', 
                   '产品数据同步', '运输数据同步', '员工数据同步'],
        '源系统': ['WMS', 'ERP', 'CRM', 'ERP', '财务系统', 'ERP', 'TMS', 'HR系统'],
        '目标系统': ['BI系统', 'WMS', 'ERP', 'CRM', 'BI系统', 'WMS', 'BI系统', 'ERP'],
        '同步方式': ['实时', '批量', '实时', '批量', '定时', '实时', '批量', '定时'],
        '同步频率': ['实时', '每小时', '实时', '每4小时', '每日', '实时', '每2小时', '每日'],
        '最后同步': ['2分钟前', '30分钟前', '1分钟前', '2小时前', '今日6:00', '1分钟前', '1小时前', '今日6:00'],
        '同步状态': ['正常', '正常', '正常', '正常', '正常', '异常', '正常', '正常'],
        '数据量': ['1,234', '5,678', '2,345', '1,876', '12,345', '0', '3,456', '567']
    })
    
    # 根据同步状态设置行颜色
    def highlight_sync_status(row):
        if row['同步状态'] == '异常':
            return ['background-color: #ffebee'] * len(row)
        else:
            return ['background-color: #e8f5e8'] * len(row)
    
    styled_sync_tasks = sync_tasks.style.apply(highlight_sync_status, axis=1)
    st.dataframe(styled_sync_tasks, use_container_width=True)
    
    # 同步任务操作
    st.subheader("同步任务操作")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        if st.button("🔄 立即同步全部", use_container_width=True):
            st.success("全部同步任务已启动")
    
    with col2:
        if st.button("⏸️ 暂停异常任务", use_container_width=True):
            st.success("异常任务已暂停")
    
    with col3:
        if st.button("🔧 重启失败任务", use_container_width=True):
            st.success("失败任务已重启")
    
    with col4:
        if st.button("📊 查看同步报告", use_container_width=True):
            st.success("跳转到同步报告页面")
    
    # 数据同步配置
    st.subheader("新建同步任务")
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        task_name = st.text_input("任务名称", "新同步任务")
        source_system = st.selectbox("源系统", ['ERP', 'WMS', 'CRM', 'TMS', '财务系统', 'MES'])
        target_system = st.selectbox("目标系统", ['BI系统', 'ERP', 'WMS', 'CRM', '数据仓库'])
    
    with col2:
        sync_method = st.selectbox("同步方式", ['实时', '批量', '定时'])
        sync_frequency = st.selectbox("同步频率", ['实时', '每分钟', '每小时', '每日', '每周'])
        data_type = st.selectbox("数据类型", ['全量', '增量', '变更'])
    
    with col3:
        start_time = st.time_input("开始时间", datetime.now().time())
        end_time = st.time_input("结束时间", (datetime.now() + timedelta(hours=1)).time())
        
        if st.button("创建同步任务", type="primary"):
            st.success("同步任务创建成功！")
    
    # 同步性能分析
    st.subheader("同步性能分析")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 同步数据量趋势
        dates = pd.date_range(start='2024-03-01', end='2024-03-15', freq='D')
        sync_volume = pd.DataFrame({
            '日期': dates,
            '同步数据量': [150000 + 30000*np.sin(i*2*np.pi/7) + np.random.normal(0, 10000) 
                         for i in range(len(dates))]
        })
        
        fig_sync_volume = px.line(sync_volume, x='日期', y='同步数据量',
                                title="数据同步量趋势")
        st.plotly_chart(fig_sync_volume, use_container_width=True)
    
    with col2:
        # 同步成功率分析
        success_rates = pd.DataFrame({
            '系统': ['ERP', 'WMS', 'CRM', 'TMS', '财务', 'MES'],
            '成功率': [99.5, 99.8, 99.2, 98.9, 99.6, 99.1]
        })
        
        fig_success = px.bar(success_rates, x='系统', y='成功率',
                           title="各系统同步成功率")
        fig_success.add_hline(y=99, line_dash="dash", line_color="red", 
                            annotation_text="目标成功率")
        st.plotly_chart(fig_success, use_container_width=True)

# 接口监控页面
elif page_selection == "接口监控":
    st.header("📊 接口监控")
    
    # 监控概览
    st.subheader("接口监控概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("监控接口数", "45个", "+3个")
    
    with col2:
        st.metric("正常接口", "42个", "+1个")
    
    with col3:
        st.metric("异常接口", "3个", "+2个")
    
    with col4:
        st.metric("平均可用率", "99.2%", "-0.3%")
    
    # 实时监控数据
    st.subheader("实时监控数据")
    
    monitoring_data = pd.DataFrame({
        '接口名称': ['用户认证', '库存查询', '订单创建', '商品信息', '供应商管理', '财务数据', '运输跟踪', '报表生成'],
        '接口地址': ['/api/v1/auth', '/api/v1/inventory', '/api/v1/orders', '/api/v1/products',
                   '/api/v1/suppliers', '/api/v1/finance', '/api/v1/transport', '/api/v1/reports'],
        '状态': ['正常', '正常', '异常', '正常', '正常', '正常', '异常', '正常'],
        '响应时间': ['85ms', '120ms', 'N/A', '110ms', '135ms', '165ms', 'N/A', '180ms'],
        '成功率': ['99.8%', '99.5%', '0%', '99.7%', '99.6%', '99.4%', '0%', '99.8%'],
        '每分钟调用': [45, 78, 0, 56, 23, 34, 0, 12],
        '错误次数': [1, 3, 15, 2, 2, 4, 12, 1],
        '最后检查': ['30秒前', '30秒前', '30秒前', '30秒前', '30秒前', '30秒前', '30秒前', '30秒前']
    })
    
    # 根据状态设置行颜色
    def highlight_monitoring_status(row):
        if row['状态'] == '异常':
            return ['background-color: #ffebee'] * len(row)
        else:
            return ['background-color: #e8f5e8'] * len(row)
    
    styled_monitoring_data = monitoring_data.style.apply(highlight_monitoring_status, axis=1)
    st.dataframe(styled_monitoring_data, use_container_width=True)
    
    # 监控图表
    col1, col2 = st.columns(2)
    
    with col1:
        # 响应时间趋势
        time_points = pd.date_range(start='2024-03-15 14:00', periods=30, freq='min')
        response_trend = pd.DataFrame({
            '时间': time_points,
            '平均响应时间': [120 + 30*np.sin(i*2*np.pi/30) + np.random.normal(0, 10) 
                          for i in range(30)]
        })
        
        fig_response_trend = px.line(response_trend, x='时间', y='平均响应时间',
                                   title="接口平均响应时间趋势")
        fig_response_trend.add_hline(y=200, line_dash="dash", line_color="red", 
                                   annotation_text="告警阈值")
        st.plotly_chart(fig_response_trend, use_container_width=True)
    
    with col2:
        # 接口调用量分布
        call_distribution = pd.DataFrame({
            '接口': ['用户认证', '库存查询', '订单创建', '商品信息', '供应商管理'],
            '调用量': [2345, 1876, 1234, 987, 654]
        })
        
        fig_calls = px.pie(call_distribution, values='调用量', names='接口',
                         title="接口调用量分布")
        st.plotly_chart(fig_calls, use_container_width=True)
    
    # 告警规则配置
    st.subheader("告警规则配置")
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        st.subheader("响应时间告警")
        response_threshold = st.number_input("响应时间阈值(ms)", min_value=100, value=200, step=10)
        response_duration = st.selectbox("持续时间", ['1分钟', '3分钟', '5分钟', '10分钟'])
        st.checkbox("启用响应时间告警", value=True)
    
    with col2:
        st.subheader("成功率告警")
        success_threshold = st.number_input("成功率阈值(%)", min_value=90.0, max_value=100.0, value=95.0, step=0.1)
        success_duration = st.selectbox("持续时间", ['1分钟', '3分钟', '5分钟', '10分钟'], key="success_duration")
        st.checkbox("启用成功率告警", value=True)
    
    with col3:
        st.subheader("可用性告警")
        availability_threshold = st.number_input("可用性阈值(%)", min_value=90.0, max_value=100.0, value=99.0, step=0.1)
        availability_duration = st.selectbox("持续时间", ['1分钟', '3分钟', '5分钟', '10分钟'], key="availability_duration")
        st.checkbox("启用可用性告警", value=True)
    
    if st.button("保存告警配置", type="primary"):
        st.success("告警配置已保存！")
    
    # 历史告警记录
    st.subheader("历史告警记录")
    
    alert_history = pd.DataFrame({
        '时间': ['14:25', '13:45', '12:30', '11:15', '10:20'],
        '接口名称': ['订单创建', '运输跟踪', '库存查询', '财务数据', '用户认证'],
        '告警类型': ['接口异常', '响应超时', '成功率低', '响应超时', '成功率低'],
        '告警级别': ['严重', '警告', '警告', '警告', '提醒'],
        '告警内容': ['接口连续5分钟无响应', '响应时间超过200ms', '成功率低于95%', '响应时间超过200ms', '成功率低于98%'],
        '处理状态': ['已处理', '已处理', '已处理', '已处理', '已处理'],
        '处理人': ['运维A', '运维B', '运维A', '运维C', '运维A']
    })
    
    # 根据告警级别设置行颜色
    def highlight_alert_level(row):
        if row['告警级别'] == '严重':
            return ['background-color: #ffebee'] * len(row)
        elif row['告警级别'] == '警告':
            return ['background-color: #fff3e0'] * len(row)
        else:
            return ['background-color: #f0f8ff'] * len(row)
    
    styled_alert_history = alert_history.style.apply(highlight_alert_level, axis=1)
    st.dataframe(styled_alert_history, use_container_width=True)

# 消息队列页面
elif page_selection == "消息队列":
    st.header("📨 消息队列管理")
    
    # 队列概览
    st.subheader("消息队列概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("队列总数", "8个", "+1个")
    
    with col2:
        st.metric("待处理消息", "1,234条", "+156条")
    
    with col3:
        st.metric("今日处理量", "45,678条", "+3,456条")
    
    with col4:
        st.metric("平均处理时间", "2.3秒", "-0.2秒")
    
    # 队列状态
    st.subheader("消息队列状态")
    
    queue_status = pd.DataFrame({
        '队列名称': ['订单处理队列', '库存更新队列', '支付通知队列', '邮件发送队列', 
                   '数据同步队列', '日志处理队列', '报表生成队列', '系统通知队列'],
        '队列类型': ['业务队列', '数据队列', '通知队列', '通知队列', 
                   '数据队列', '系统队列', '报表队列', '通知队列'],
        '消费者数量': [3, 2, 4, 2, 1, 1, 1, 2],
        '待处理消息': [234, 456, 123, 89, 178, 67, 45, 42],
        '处理中消息': [12, 8, 15, 3, 5, 2, 1, 4],
        '今日处理量': [5678, 8234, 3456, 1234, 2345, 4567, 567, 1876],
        '平均处理时间': ['1.2秒', '0.8秒', '2.1秒', '3.5秒', '5.2秒', '0.5秒', '15.6秒', '1.8秒'],
        '状态': ['正常', '正常', '正常', '正常', '繁忙', '正常', '正常', '正常']
    })
    
    # 根据状态设置行颜色
    def highlight_queue_status(row):
        if row['状态'] == '异常':
            return ['background-color: #ffebee'] * len(row)
        elif row['状态'] == '繁忙':
            return ['background-color: #fff3e0'] * len(row)
        else:
            return ['background-color: #e8f5e8'] * len(row)
    
    styled_queue_status = queue_status.style.apply(highlight_queue_status, axis=1)
    st.dataframe(styled_queue_status, use_container_width=True)
    
    # 队列操作
    st.subheader("队列操作")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        if st.button("🔄 刷新队列状态", use_container_width=True):
            st.success("队列状态已刷新")
    
    with col2:
        if st.button("⏸️ 暂停繁忙队列", use_container_width=True):
            st.success("繁忙队列已暂停")
    
    with col3:
        if st.button("🚀 启动所有队列", use_container_width=True):
            st.success("所有队列已启动")
    
    with col4:
        if st.button("🗑️ 清理死信队列", use_container_width=True):
            st.success("死信队列已清理")
    
    # 消息监控
    st.subheader("消息处理监控")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 消息处理量趋势
        time_points = pd.date_range(start='2024-03-15 08:00', periods=24, freq='H')
        message_trend = pd.DataFrame({
            '时间': time_points,
            '处理量': [1500 + 500*np.sin(i*2*np.pi/24) + np.random.normal(0, 100) 
                     for i in range(24)]
        })
        
        fig_message_trend = px.line(message_trend, x='时间', y='处理量',
                                  title="消息处理量趋势")
        st.plotly_chart(fig_message_trend, use_container_width=True)
    
    with col2:
        # 队列消息分布
        queue_distribution = pd.DataFrame({
            '队列': ['订单处理', '库存更新', '支付通知', '邮件发送', '数据同步'],
            '消息数': [234, 456, 123, 89, 178]
        })
        
        fig_queue_dist = px.pie(queue_distribution, values='消息数', names='队列',
                              title="队列消息分布")
        st.plotly_chart(fig_queue_dist, use_container_width=True)
    
    # 消息详情
    st.subheader("消息详情")
    
    selected_queue = st.selectbox("选择队列", queue_status['队列名称'].tolist())
    
    if selected_queue:
        message_details = pd.DataFrame({
            '消息ID': [f'MSG{i:06d}' for i in range(1, 11)],
            '消息类型': ['订单创建', '库存更新', '支付成功', '邮件发送', '数据同步'] * 2,
            '创建时间': [f'14:{30-i}:{i*3:02d}' for i in range(10)],
            '处理状态': ['待处理', '处理中', '已完成', '待处理', '失败'] * 2,
            '重试次数': [0, 1, 0, 0, 3, 0, 2, 0, 0, 1],
            '消息内容': [f'订单处理消息{i}' for i in range(1, 11)]
        })
        
        # 根据处理状态设置行颜色
        def highlight_message_status(row):
            if row['处理状态'] == '失败':
                return ['background-color: #ffebee'] * len(row)
            elif row['处理状态'] == '处理中':
                return ['background-color: #fff3e0'] * len(row)
            elif row['处理状态'] == '已完成':
                return ['background-color: #e8f5e8'] * len(row)
            else:
                return ['background-color: #f5f5f5'] * len(row)
        
        styled_message_details = message_details.style.apply(highlight_message_status, axis=1)
        st.dataframe(styled_message_details, use_container_width=True)

# 集成配置页面
elif page_selection == "集成配置":
    st.header("⚙️ 集成配置")
    
    # 系统配置
    st.subheader("系统连接配置")
    
    system_configs = pd.DataFrame({
        '系统名称': ['ERP系统', 'WMS系统', 'CRM系统', 'TMS系统', '财务系统', 'MES系统'],
        '连接类型': ['数据库', 'REST API', 'REST API', 'REST API', 'SOAP', 'MQ'],
        '连接地址': ['192.168.1.100:3306', 'http://wms.api.com', 'http://crm.api.com', 
                   'http://tms.api.com', 'http://finance.soap.com', '192.168.1.200:5672'],
        '认证方式': ['用户名密码', 'API Key', 'OAuth2', 'JWT', '证书', '用户名密码'],
        '连接状态': ['已连接', '已连接', '已连接', '未连接', '已连接', '已连接'],
        '最后测试': ['2分钟前', '5分钟前', '3分钟前', '1小时前', '10分钟前', '1分钟前']
    })
    
    # 根据连接状态设置行颜色
    def highlight_connection_status(row):
        if row['连接状态'] == '未连接':
            return ['background-color: #ffebee'] * len(row)
        else:
            return ['background-color: #e8f5e8'] * len(row)
    
    styled_system_configs = system_configs.style.apply(highlight_connection_status, axis=1)
    st.dataframe(styled_system_configs, use_container_width=True)
    
    # 新增系统配置
    st.subheader("新增系统配置")
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        system_name = st.text_input("系统名称", "新系统")
        connection_type = st.selectbox("连接类型", ['REST API', 'SOAP', '数据库', 'MQ', 'FTP'])
        connection_url = st.text_input("连接地址", "http://api.example.com")
    
    with col2:
        auth_method = st.selectbox("认证方式", ['API Key', 'OAuth2', 'JWT', '用户名密码', '证书'])
        username = st.text_input("用户名", "")
        password = st.text_input("密码", "", type="password")
    
    with col3:
        timeout = st.number_input("超时时间(秒)", min_value=5, value=30, step=5)
        retry_times = st.number_input("重试次数", min_value=0, value=3, step=1)
        
        if st.button("测试连接", use_container_width=True):
            st.success("连接测试成功！")
        
        if st.button("保存配置", type="primary", use_container_width=True):
            st.success("系统配置已保存！")
    
    # 数据映射配置
    st.subheader("数据映射配置")
    
    mapping_configs = pd.DataFrame({
        '映射名称': ['用户信息映射', '商品信息映射', '订单信息映射', '库存信息映射'],
        '源系统': ['CRM', 'ERP', 'ERP', 'WMS'],
        '目标系统': ['ERP', 'WMS', 'WMS', 'BI系统'],
        '源字段': ['customer_id, name, phone', 'product_id, name, price', 'order_id, customer_id, amount', 'product_id, quantity, location'],
        '目标字段': ['user_id, user_name, mobile', 'item_id, item_name, unit_price', 'order_no, user_id, total_amount', 'item_id, stock_qty, warehouse'],
        '转换规则': ['直接映射', '直接映射', '金额*100', '直接映射'],
        '状态': ['启用', '启用', '启用', '禁用']
    })
    
    st.dataframe(mapping_configs, use_container_width=True)
    
    # 全局配置
    st.subheader("全局配置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("性能配置")
        max_connections = st.number_input("最大连接数", min_value=10, value=100, step=10)
        connection_pool_size = st.number_input("连接池大小", min_value=5, value=20, step=5)
        request_timeout = st.number_input("请求超时(秒)", min_value=5, value=30, step=5)
        
        st.subheader("安全配置")
        enable_ssl = st.checkbox("启用SSL", value=True)
        enable_auth = st.checkbox("启用认证", value=True)
        token_expire = st.number_input("Token过期时间(小时)", min_value=1, value=24, step=1)
    
    with col2:
        st.subheader("日志配置")
        log_level = st.selectbox("日志级别", ['DEBUG', 'INFO', 'WARN', 'ERROR'])
        log_retention = st.number_input("日志保留天数", min_value=7, value=30, step=1)
        enable_audit = st.checkbox("启用审计日志", value=True)
        
        st.subheader("监控配置")
        health_check_interval = st.number_input("健康检查间隔(秒)", min_value=10, value=60, step=10)
        alert_threshold = st.number_input("告警阈值(%)", min_value=80.0, max_value=100.0, value=95.0, step=0.1)
        enable_metrics = st.checkbox("启用性能指标", value=True)
    
    if st.button("保存全局配置", type="primary"):
        st.success("全局配置已保存！")

# 日志管理页面
elif page_selection == "日志管理":
    st.header("📋 日志管理")
    
    # 日志概览
    st.subheader("日志概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("今日日志量", "156,789条", "+12,345条")
    
    with col2:
        st.metric("错误日志", "234条", "+23条")
    
    with col3:
        st.metric("警告日志", "1,567条", "+156条")
    
    with col4:
        st.metric("日志存储", "2.3GB", "+0.2GB")
    
    # 日志查询
    st.subheader("日志查询")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        log_level_filter = st.selectbox("日志级别", ['全部', 'DEBUG', 'INFO', 'WARN', 'ERROR'])
    
    with col2:
        log_system_filter = st.selectbox("系统来源", ['全部', 'API网关', 'ERP', 'WMS', 'CRM', 'TMS'])
    
    with col3:
        start_date = st.date_input("开始日期", datetime.now().date())
    
    with col4:
        end_date = st.date_input("结束日期", datetime.now().date())
    
    search_keyword = st.text_input("关键词搜索", placeholder="输入搜索关键词")
    
    if st.button("🔍 查询日志", type="primary"):
        st.success("日志查询完成")
    
    # 日志列表
    st.subheader("日志记录")
    
    log_records = pd.DataFrame({
        '时间': ['14:30:25', '14:30:20', '14:30:15', '14:30:10', '14:30:05', 
               '14:30:00', '14:29:55', '14:29:50', '14:29:45', '14:29:40'],
        '级别': ['INFO', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'INFO', 'ERROR', 'WARN', 'INFO', 'INFO'],
        '系统': ['API网关', 'ERP', 'WMS', 'CRM', 'TMS', 'API网关', 'ERP', 'WMS', 'CRM', 'TMS'],
        '模块': ['认证', '订单', '库存', '客户', '运输', '认证', '订单', '库存', '客户', '运输'],
        '消息': ['用户登录成功', '订单创建失败：库存不足', '库存预警：商品P001库存不足', '客户信息更新成功', 
               '运输路线计算完成', '用户认证成功', '订单支付失败：余额不足', '库存同步警告', '客户查询成功', '运输状态更新'],
        '用户': ['张三', '系统', '系统', '李四', '系统', '王五', '系统', '系统', '赵六', '系统'],
        'IP地址': ['192.168.1.100', '127.0.0.1', '127.0.0.1', '192.168.1.101', '127.0.0.1',
                 '192.168.1.102', '127.0.0.1', '127.0.0.1', '192.168.1.103', '127.0.0.1']
    })
    
    # 根据日志级别设置行颜色
    def highlight_log_level(row):
        if row['级别'] == 'ERROR':
            return ['background-color: #ffebee'] * len(row)
        elif row['级别'] == 'WARN':
            return ['background-color: #fff3e0'] * len(row)
        elif row['级别'] == 'DEBUG':
            return ['background-color: #f0f8ff'] * len(row)
        else:
            return ['background-color: #f5f5f5'] * len(row)
    
    styled_log_records = log_records.style.apply(highlight_log_level, axis=1)
    st.dataframe(styled_log_records, use_container_width=True)
    
    # 日志统计
    st.subheader("日志统计分析")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 日志级别分布
        log_level_dist = pd.DataFrame({
            '日志级别': ['INFO', 'WARN', 'ERROR', 'DEBUG'],
            '数量': [120000, 15000, 2000, 8000]
        })
        
        fig_log_level = px.pie(log_level_dist, values='数量', names='日志级别',
                             title="日志级别分布")
        st.plotly_chart(fig_log_level, use_container_width=True)
    
    with col2:
        # 系统日志分布
        system_log_dist = pd.DataFrame({
            '系统': ['API网关', 'ERP', 'WMS', 'CRM', 'TMS'],
            '日志量': [45000, 35000, 28000, 22000, 15000]
        })
        
        fig_system_log = px.bar(system_log_dist, x='系统', y='日志量',
                              title="各系统日志量分布")
        st.plotly_chart(fig_system_log, use_container_width=True)
    
    # 日志趋势分析
    st.subheader("日志趋势分析")
    
    # 生成24小时日志趋势数据
    hours = list(range(24))
    log_trend_data = pd.DataFrame({
        '小时': hours,
        'INFO': [5000 + 2000*np.sin((h-9)*np.pi/8) + np.random.normal(0, 300) if 8 <= h <= 18 else 1000 + np.random.normal(0, 200) for h in hours],
        'WARN': [500 + 200*np.sin((h-9)*np.pi/8) + np.random.normal(0, 50) if 8 <= h <= 18 else 100 + np.random.normal(0, 30) for h in hours],
        'ERROR': [50 + 30*np.sin((h-9)*np.pi/8) + np.random.normal(0, 10) if 8 <= h <= 18 else 20 + np.random.normal(0, 5) for h in hours]
    })
    
    fig_log_trend = px.line(log_trend_data, x='小时', y=['INFO', 'WARN', 'ERROR'],
                          title="24小时日志趋势")
    st.plotly_chart(fig_log_trend, use_container_width=True)
    
    # 日志管理操作
    st.subheader("日志管理操作")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        if st.button("📥 导出日志", use_container_width=True):
            st.success("日志导出任务已启动")
    
    with col2:
        if st.button("🗑️ 清理过期日志", use_container_width=True):
            st.success("过期日志清理完成")
    
    with col3:
        if st.button("📊 生成日志报告", use_container_width=True):
            st.success("日志报告生成中...")
    
    with col4:
        if st.button("⚙️ 日志配置", use_container_width=True):
            st.success("跳转到日志配置页面")
    
    # 日志配置
    st.subheader("日志配置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("存储配置")
        log_retention_days = st.number_input("日志保留天数", min_value=7, value=30, step=1)
        max_log_size = st.number_input("单个日志文件最大大小(MB)", min_value=10, value=100, step=10)
        max_log_files = st.number_input("最大日志文件数", min_value=5, value=50, step=5)
        
        st.subheader("输出配置")
        enable_console_log = st.checkbox("启用控制台输出", value=True)
        enable_file_log = st.checkbox("启用文件输出", value=True)
        enable_remote_log = st.checkbox("启用远程日志", value=False)
    
    with col2:
        st.subheader("级别配置")
        default_log_level = st.selectbox("默认日志级别", ['DEBUG', 'INFO', 'WARN', 'ERROR'], index=1)
        
        st.write("**各模块日志级别:**")
        api_log_level = st.selectbox("API网关", ['DEBUG', 'INFO', 'WARN', 'ERROR'], index=1, key="api_level")
        erp_log_level = st.selectbox("ERP系统", ['DEBUG', 'INFO', 'WARN', 'ERROR'], index=1, key="erp_level")
        wms_log_level = st.selectbox("WMS系统", ['DEBUG', 'INFO', 'WARN', 'ERROR'], index=1, key="wms_level")
        
        st.subheader("格式配置")
        log_format = st.selectbox("日志格式", ['标准格式', 'JSON格式', '自定义格式'])
        include_stack_trace = st.checkbox("包含堆栈跟踪", value=True)
    
    if st.button("保存日志配置", type="primary"):
        st.success("日志配置已保存！")

# 页面底部信息
st.markdown("---")
st.markdown(
    """
    <div style="text-align: center; color: #666; padding: 20px;">
        <p>🔗 系统集成管理 | 统一管理各系统间的数据交互与集成</p>
        <p>支持API管理、数据同步、接口监控、消息队列等功能</p>
    </div>
    """,
    unsafe_allow_html=True
)